/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.unam.fciencias.ActividadesCulturales.services.DAO;

import java.util.List;
import mx.unam.fciencias.actividadesculturales.entidades.db.EntidadAcademica;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;
import org.hibernate.transform.Transformers;

/**
 * Capa de datos de la entidad acgetHibernateTemplate().getSessionFactory()
                .getCurrentSession();ademica.
 * @author lumartin
 */
public class EntidadAcademicaDAO extends GenericDAO {

    /**
     * Obtiene todas las entidades academicas de la base de datos.
     * @return lista con las entidades academicas.
     */
    public List<EntidadAcademica> getTodas() {
        Session session = super.getSesionDAO();

        Criteria crit = session.createCriteria(EntidadAcademica.class)
                .setProjection(Projections.distinct(Projections.projectionList()
            .add(Projections.property("id_ent_acad"), "id_ent_acad")
            .add(Projections.property("nomb_ent"), "nomb_ent")
        )).setResultTransformer(Transformers.aliasToBean(EntidadAcademica.class));

        return crit.list();
    }

    /**
     * Obtiene una entidad academica a partir de su identificador.
     * @param id_ent_acad el identificador de la entidad academica.
     * @return la entidad academica.
     */
    public EntidadAcademica getById(Long id_ent_acad) {
        return (EntidadAcademica) super.getById(EntidadAcademica.class, id_ent_acad);
    }

    /**
     * Guarda o actualiza una entidad academica.
     * @param entidadAcademica a guardar.
     * @return true si guardo correctamente false si no.
     */
    public boolean guardar(EntidadAcademica entidadAcademica) {
        return super.guardar(entidadAcademica);
    }
}
